
\chapter*{概述}

在一个P2P网络中，随时会有任意数量的节点加入或退出，整个网络的规模和形态是十分不确定的。
因此，不存在能够获取\emph{`实时、全量'}节点信息的确定性方法，每个节点只能保存一个子集，且不能保证其中的信息总是有效的，
这个子集称为DHT\footnote{意指Distributed Hash Table，即分布式哈希表}。\par
这就迫切的需要一套管理DHT的策略，即所谓
\emph{`路由协议\footnote{分布式领域内，\emph{协议}$\equiv$\emph{算法}，故此处亦可称为\emph{`路由算法'}，后续出现的相关概念，均与此类同}'}。
它是任何一个p2p网络的核心和基石，其重要性不言而喻。
经过学者们多年的探索，研究出了诸多各具特色的协议，如Pastry、Tapestry、Chord、Kademlia等。
其中尤以Kademlia应用最为广泛，在它的基础上，又洐生出了S/Kademlia、Coral、Mainline等优化版本
\footnote{另有很多定制化的变种，如ETH所用的D$\Xi$Vp2p是对Kademlia的精简，而IPFS所用的libp2p则是对S/Kademlia和Coral的融合}
，统称为Kademlia-like协议。\par
这些协议的基本理念都是类似的，都是为每个节点生成一个全局唯一的ID，
之后根据\emph{`节点距离\footnote{意指根据两个节点ID计算出的虚拟距离，不是指地理概念上的距离}'}执行节点发现、DHT更新等操作。\par
如上提到的各种协议，后续章节将逐一展开论述。
